#ifndef RANKSELECTIONSTRATEGY_H_
#define RANKSELECTIONSTRATEGY_H_

#include "SelectionStrategy.h"

/**
  * @author Łukasz Szybka
  */
class RankSelectionStrategy : public SelectionStrategy
{
public:
    RankSelectionStrategy();
    Chromosome* selectOne(const QList<Chromosome*>& chromosomeList);
    void resetTempData();

private:

    void createTempList(int listSize);
    void countDistribution();
    int currentIndex;
    int retCount;
    QList<double> factorList;
    QList<double> distributionList;

};

#endif /*RANKSELECTIONSTRATEGY_H_*/
